#include<bits/stdc++.h>
#include <cstdio>
using namespace std;
int n,m,x,y;
bool check[25][25];
int dx[8]={-2,-1,1,2,2,1,-1,-2};
int dy[8]={-1,-2,-2,-1,1,2,2,1};
int main()
{
    cin>>n>>m>>x>>y;
    //计算所有马可能拦截的坐标
    for(long long int  k=0;k<8;k++) 
    {
        long long int  xi=dx[k]+x;
        long long int  yi=dy[k]+y;
        if(xi>=0&&xi<=n&&yi>=0&&yi<=m)
        {
            //printf("(%d,%d)\n",xi,yi);
            check[xi+1][yi+1]=true;
        }
    }
    check[x+1][y+1]=true;
    vector<vector<long long int >>dp(n+2,vector<long long int >(m+2,0));
    if(check[1][1]==false)
    dp[0][1]=1;
    for(long long int  i=1;i<=n+1;i++)
    {
        for(long long int  j=1;j<=m+1;j++)
        {
            if(check[i][j]==true)
            {
                dp[i][j]=0;
                //printf("(%d,%d):%d ",i,j,dp[i][j]);
                continue;
            }

            if(check[i-1][j]==false) dp[i][j]+=dp[i-1][j];
            if(check[i][j-1]==false) dp[i][j]+=dp[i][j-1]; 
            //printf("(%d,%d):%d ",i,j,dp[i][j]);
        }
       // printf("\n");
        
    }
    cout<<dp[n+1][m+1];
    return 0;
}